// PROGRAMA : SCRPXXXX
// SISTEMA : SISP - SISTEMA DE INFORMACOES DE SEGURANCA PUBLICA
// IDENTIFICACAO CRIMINAL
// BIBLIOTECA : SISP
// CLIENTE : GEJUSPC - GERENCIA DE ESTADO DA JUSTICA, SEGURANCA
// PUBLICA E CIDADANIA / INSTITUTO DE IDENT.
// OBJETIVO : RELATORIO DA FICHA DE INDICE CRIMINAL
// PROGRAMADOR: JOSE ANTONIO COELHO
// DATA : 11 DE SETEMBRO DE 1997
// ALTERACAO : 14/06/1999 POR SOLON MIRANDA

package br.com.vti.sisp_sicrim.antigo.controller.programa;

import br.com.caelum.vraptor.Post;
import br.com.caelum.vraptor.Path;
import br.com.caelum.vraptor.Resource;
import br.com.caelum.vraptor.Result;
import br.com.vti.sisp_sicrim.antigo.controller.tela.Scrm111a;
import br.com.vti.sisp_sicrim.antigo.model.SicCadastro;
import br.com.vti.sisp_sicrim.antigo.model.SicSenha;
import br.com.vti.sisp_sicrim.antigo.util.ExceptionProgram;
import br.com.vti.sisp_sicrim.antigo.util.Scrg001;
import br.com.vti.sisp_sicrim.antigo.util.Sessao;
import br.com.vti.sisp_sicrim.antigo.util.UtilBean;

/**
 * Classe : Scrp141a OBJETIVO : RELATORIO DA FICHA DE INDICE CRIMINAL *
 * 
 * @author Incode - Data: mai/2014
 * 
 */

@Resource
@Path("/antigo/scrp141a")
public class Scrp141a {
	Scrp141a scrp141aAnterior;
	// Views utilizadas
	SicCadastro criminalView = new SicCadastro();
	SicSenha senhaView = new SicSenha();
	// Telas/relatorios utilizados
	Scrm111a scrm111a;
	// Includes utilizados
	// Areas globais / session
	Scrg001 scrg001; // Funcoes/subrotinas
	FuncoesGerais funcoes = new FuncoesGerais();
	Result result;
	Sessao sessao;
	Boolean primeiraVez = false;

	public int jDataIni = 0;
	private String jData_nasc = "";
	private String[][] dedos = new String[6][3];
	// private int jMatricula = 0;
	private String jDataDig = "";

	public String faseproc = "0";
	private int nroReg = 1;

	private Scrm111a preMapas() {
		sessao.getScrg001().setWFuncaow("CONSULTA");
		sessao.getScrg001().setWProgramaw(this.getClass().getSimpleName().toUpperCase());

		scrm111a = new Scrm111a(true, sessao);
		scrm111a.setDataCorrente(UtilBean.obtemDataDia());
		// RELATORIO

		return scrm111a;
	}

	public Scrp141a(Result result, Sessao sessao) {
		this.result = result;
		this.sessao = sessao;
	}

	@Post
	public void executar(Scrm111a scrm111a) {
		try {
			main(scrm111a);
		} catch (Exception e) {
			throw new ExceptionProgram(e, sessao, this.getClass().getSimpleName());
		}
	}

	private void main(Scrm111a pscrm111a) {
		if (pscrm111a == null) {
			primeiraVez = true;
			// scrm111a = new Scrm111a (primeiraVez);
			scrm111a = preMapas();
			scrm111a.setNavegar("../scrp141a/executar");
			sessao.setAtributo("Scrp141a", this);
		} else {
			restaurarEstados(pscrm111a);
		}

		scrm111a.receberTela(false, result);
		if (!((UtilBean.funcao.equals(UtilBean.ctt_retorna) || UtilBean.funcao.equals(UtilBean.ctt_processa)))) {
			scrm111a.enviarMensagem(null, "Tecla invalida");
			return;
		}
		if (UtilBean.funcao.equals(UtilBean.ctt_retorna)) {
			Scrp1400 scrp1400 = new Scrp1400(null, null);
			scrp1400.executar(null, null, null, null);
			return;
		}

		if (criminalView.pesquisaDataDocAtuClasStatusRegDifer(jDataIni, 5)) {
			scrm111a.setJregGeral(criminalView.getRegEstadualGeral());
			scrm111a.setJnomecompleto(criminalView.getNomeCompleto());
			scrm111a.setJmae(criminalView.getNomeMae());
			jData_nasc = String.valueOf(criminalView.getDataNasc());
			scrm111a.setJddnasc(UtilBean.subStr(jData_nasc, 6, 2));
			scrm111a.setJmmnasc(UtilBean.subStr(jData_nasc, 4, 2));
			scrm111a.setJaanasc(UtilBean.subStr(jData_nasc, 0, 4));
			scrm111a.setJpai(criminalView.getNomePai());
			scrm111a.setJalcunha(criminalView.getApelidoAlcunhas());
			scrm111a.setJnatural(criminalView.getNaturalidade());
			scrm111a.setJcodmunnascimento(criminalView.getCodigoMunicipioNasc());
			scrm111a.setJufnascimento(criminalView.getUfNaturalidade());
			scrm111a.setJocorrencia(1);
			scrm111a.setJobservacoes(criminalView.getObservacao());
			jDataDig = String.valueOf(criminalView.getDataDocAtu());
			scrm111a.setJdiadig(UtilBean.subStr(jDataDig, 6, 2));
			scrm111a.setJmesdig(UtilBean.subStr(jDataDig, 4, 2));
			scrm111a.setJanodig(UtilBean.subStr(jDataDig, 0, 4));
			scrm111a.setJmatricula(criminalView.getMatriculaFuncAtu());
			scrm111a.setJhorario(criminalView.getHoraAtu());

			senhaView.consultaMatricula(scrm111a.getJmatricula());
			scrm111a.setJnomedigitador(senhaView.getNome());
			senhaView.fecha();

			result.include("scrm111a", scrm111a);
			sessao.setAtributo("Scrp141a", this);
			if (!result.used()) {
				scrm111a.enviarTela(false, result, getClass().getSimpleName().toUpperCase());
			}
			return;
		}
		if (criminalView.registrosProcessados() == 0) {
			scrm111a.enviarMensagem("", "               Nenhuma Ficha Foi Cadastrada Nesse Periodo.");
			sessao.setAtributo("Scrp141a", this);
			result.include("scrm111a", scrm111a);
			scrm111a.enviarTela(primeiraVez, result, getClass().getSimpleName().toUpperCase());
			return;
		}
		if (criminalView.fimDados()) {
			Scrp140a scrp140a = new Scrp140a(result, sessao);
			scrp140a.executar(null, null, null, null);
		}
		criminalView.fecha();
	}

	private void restaurarEstados(Scrm111a pscrm111a) {
		this.scrp141aAnterior = (Scrp141a) sessao.getAtributo("Scrp141a");
		if (pscrm111a != null) {
			scrm111a = pscrm111a;
		} else {
			scrm111a = this.scrp141aAnterior.scrm111a;
		}
		scrm111a.setSessao(sessao);
		this.faseproc = this.scrp141aAnterior.faseproc;
		this.criminalView = this.scrp141aAnterior.criminalView;
	}
}
